package com.mofeng.myshop.service;

import com.mofeng.myshop.domain.dto.OrderFromDto;
import com.mofeng.myshop.domain.dto.search.OrderFromSearchDto;
import com.mofeng.myshop.domain.po.UserInfo;
import com.mofeng.myshop.until.R;

import java.util.List;

/**
 * <p>
 * 订单 服务类
 * </p>
 *
 * @author MoFeng
 * @since 2024-04-14
 */
public interface IOrderFromService {

    /**
     * 添加到购物车
     *
     * @param orderFromDto 订单详情
     */
    R addToShopping(OrderFromDto orderFromDto);


    /**
     * 修改购物车物品
     *
     * @param orderFromDto 订单详情
     */
    R updateShopping(OrderFromDto orderFromDto);

    /**
     * 直接购买
     *
     * @param orderFromDto 订单信息
     */
    R buy(OrderFromDto orderFromDto);

    /**
     * 购物车购买
     *
     * @param orderFromList 订单ID列表
     */
    R buyList(List<OrderFromDto> orderFromList);

    /**
     * 获取订单列表
     *
     * @param orderFromSearchDto 搜索条件
     */
    R getListPortal(OrderFromSearchDto orderFromSearchDto);
    /**
     * 获取订单列表
     *
     * @param orderFromSearchDto 搜索条件
     */
    R getListAdmin(OrderFromSearchDto orderFromSearchDto);

    /**
     * 删除订单信息
     *
     * @param ids ids列表
     */
    R delPortal(List<String> ids);

    /**
     * 删除订单信息（物理删除）
     *
     * @param ids ids列表
     */
    R delAdmin(List<String> ids);

    /**
     * 重新发货
     *
     * @param id 订单ID
     */
    R reBuy(String id);

    /**
     *
     * @param giftChar 礼物列表
     * @param addressIdLong 地址ID
     * @param userInfoDb 用户信息
     */
    void sendNewGift(List<String> giftChar, Long addressIdLong, UserInfo userInfoDb);
}
